/**
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved. <br/>
 * 描述: TODO <br/>
 *
 * @author framework generator
 * @date 2022年02月18日
 * @version 2.0
 */
package com.icinfo.cloud.provider.punish.common.electricsent.mapper;

import com.icinfo.cloud.provider.punish.common.electricsent.dto.DocumentSendPageRequest;
import com.icinfo.cloud.provider.punish.common.electricsent.dto.DocumentSendPageResponse;
import com.icinfo.cloud.provider.punish.common.electricsent.dto.DocumentSendRecordByPartiesQueryDto;
import com.icinfo.cloud.provider.punish.common.electricsent.dto.DocumentSendRecordQueryDto;
import com.icinfo.cloud.provider.punish.common.electricsent.model.DocumentSendRecord;
import com.icinfo.cloud.provider.punish.common.electricsent.vo.DocumentSendRecordByPartiesVo;
import com.icinfo.cloud.provider.punish.common.electricsent.vo.DocumentSendRecordVo;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.mybatis.mapper.common.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 描述: 文书发送记录 document_send_record 对应的Mapper接口.<br>
 *
 * @author framework generator
 * @date 2022年02月18日
 */
public interface DocumentSendRecordMapper extends Mapper<DocumentSendRecord> {

    /**
     * 【V1.0.0】描述：获取文书发送记录列表
     *
     * @param queryDto {@link DocumentSendRecordQueryDto}
     * @return {@link List <DocumentSendRecordVo>} 文书发送记录列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<DocumentSendRecordVo> selectDocumentSendRecordList(DocumentSendRecordQueryDto queryDto);


    /**
     * 获取多当事人合并处罚文书送达记录
     *
     * @return {@link List< DocumentSendRecordByPartiesVo>}
     * @author: zhengqiang
     * @date: 2022/5/17
     * @param: queryDto
     **/
    List<DocumentSendRecordByPartiesVo> selectDocumentSendRecordListByPartiesOfMergePunish(DocumentSendRecordByPartiesQueryDto queryDto);
    /**
     * 获取多当事人合并处罚文书送达记录
     *
     * @return {@link List< DocumentSendRecordByPartiesVo>}
     * @author: zhengqiang
     * @date: 2022/5/17
     * @param: queryDto
     **/
    List<DocumentSendRecordByPartiesVo> selectExecuteDocumentSendRecordListByPartiesOfMergePunish(DocumentSendRecordByPartiesQueryDto queryDto);
    /**
     * 获取多当事人分别处罚文书送达记录
     *
     * @return {@link List< DocumentSendRecordByPartiesVo>}
     * @author: zhengqiang
     * @date: 2022/5/28
     * @param: caseId
     * @param: documentCatalogCode
     **/
    List<DocumentSendRecordByPartiesVo> selectDocumentSendRecordListByPartiesOfPartPunish(@Param("caseId") String caseId, @Param("documentCatalogCode") String documentCatalogCode);

    /**
     * 获取多当事人分别处罚文书送达记录
     *
     * @return {@link List< DocumentSendRecordByPartiesVo>}
     * @author: zhengqiang
     * @date: 2022/5/28
     * @param: caseId
     * @param: documentCatalogCode
     **/
    List<DocumentSendRecordByPartiesVo> selectExecuteDocumentSendRecordListByPartiesOfPartPunish(@Param("documentId") String documentId, @Param("documentCatalogCode") String documentCatalogCode);

    /**
     * 获取送达回证记录
     *
     * @return {@link List< DocumentSendRecordByPartiesVo>}
     * @author: zhengqiang
     * @date: 2022/6/6
     * @param: caseId
     * @param: catalogCodeList
     * @param: partyId
     **/
    List<DocumentSendRecordByPartiesVo> selectDocumentSendRecordByCaseIdAndCatalogCodeAndPartyId(@Param("caseId") String caseId, @Param("catalogCodeList") List<String> catalogCodeList, @Param("partyId") String partyId);

    /**
     * 【V1.3.0】描述：修改文书送达记录为删除
     *
     * @return
     * @author tianrunjia
     * @date 2022-06-27
     */
    void deleteDocumentSendRecord(@Param("documentId") String documentId, @Param("caseId") String caseId);

    /**
     * 描述: 获取多当事人分别处罚文书送达记录
     *
     * @param caseId
     * @param documentId
     * @return java.util.List
     * @author zhanghongqiang
     * @Date 2022/9/14
     */
    List<DocumentSendRecordByPartiesVo> selectDocumentSendRecordListByExecuteParty(@Param("caseId") String caseId, @Param("documentId") String documentId);

    /**
     * 描述: 获取送达回证记录
     * @author zhanghongqiang
     * @Date 2022/9/19
     * @param caseId
     * @param catalogCodeList
     * @param partyId
     * @return java.util.List<com.icinfo.cloud.provider.punish.common.electricsent.vo.DocumentSendRecordByPartiesVo>
     */
    List<DocumentSendRecordByPartiesVo> selectDocumentSendRecordByExecuteIdAndCatalogCodeAndPartyId(@Param("caseId") String caseId, @Param("catalogCodeList") List<String> catalogCodeList, @Param("partyId") String partyId);

    /**
     * 电子送达记录分页查询
     *
     * @param queryDto {@link DocumentSendPageRequest}
     * @return {@link List<DocumentSendPageResponse>} 电子送达记录列表
     * @author yehaufei
     * @date 2022-11-28
     */
    List<DocumentSendPageResponse> getDocumentSendList(DocumentSendPageRequest queryDto);

    /**
     * 获取当事人送达回证
     * @param caseId
     * @param partyId
     * @return
     */
    String getSDHZDocumentDoc(@Param("caseId") String caseId, @Param("partyId") String partyId, @Param("caseStageCode") String caseStageCode);
}
